package edu.scau.system.service;

import edu.scau.system.domain.User;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public interface IUserService {
    /**
     * 根据ID查询user
     *
     * @param userId
     * @return
     */
    
    public User selectUserById(Long userId) ;

    /**
     * 根据userName查询user
     *
     * @param userName
     * @return
     */
    
    public User selectUserByUserName(String userName);
    /**
     * 查询user集合
     *
     * @param user
     * @return
     */
    
    public List<User> selectUserList(User user) ;

    /**
     * 删除用户
     *
     * @param userId
     * @return
     */
    
    public int deleteUserById(Long userId) ;

    /**
     * 新增用户
     *
     * @param user
     * @return
     */
    
    public int insertUser(User user) ;
    /**
     * 新增用户-角色信息
     * 前端需传递roles数组
     * @param user
     */
    
    public void insertUserRole(User user);


    /**
     * 用户角色授权
     * @param userId
     * @param roleIds
     */
    
    public void insertUserAuth(Long userId, Long[] roleIds);
    /**
     * 新增用户角色信息
     *
     * @param userId 用户ID
     * @param roleIds 角色组
     */
    public void insertUserRole(Long userId, Long[] roleIds);

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    
    public int updateUser(User user) ;

    /**
     * 检查用户名是否唯一
     *
     * @param userName
     * @return
     */
    
    public boolean checkUserNameUnique(String userName);

    /**
     * 更新用户头像
     *
     * @param user
     * @return
     */
    
    public int updateUserAvatar(User user) ;

    /**
     * 重置密码
     *
     * @param user
     * @return
     */
    
    public int resetUserPassword(User user) ;

    /**
     * 查询用户的角色组
     * 前端需求ROLE_admin,ROLE_user
     * @param userName
     * @return
     */
    
    public String selectUserRoleGroup(String userName) ;

    /**
     * 查询已登录用户角色组
     *
     * @param user
     * @return
     */
    
    public String selectUserRoleGroup(User user);
}
